
import requests

from common.yaml_tools import YamlTools
from conf.conf import API_URL


class Base_request:
    # 类变量
    sess = requests.session()
    # 定义一个可以发生任意请求的方法 辅助方法
    @classmethod
    def send_request(cls,**kwargs):
        rp =  cls.sess.request(**kwargs)
        return rp
    # 把yaml文件中的测试用例 和 api请求信息传入
    @classmethod
    def excute_api_request(cls,request,testcase):
        # 1.获取接口请求方式
        method = request["method"]
        # 2.获取接口url
        url = API_URL + request["url"]
        # 3.获取接口请求头
        headers = request["headers"]
        # 4.获取接口cookies
        cookies = request["cookies"]
        # 5.获取测试数据data
        data = testcase["data"]
        # 6.获取测试数据json
        json = testcase["json"]
        # 7.获取测试数据files
        files = testcase["files"]
        # 8 获取测试数据get
        params = testcase["params"]
        rp = cls.send_request(method=method,url=url,headers=headers,cookies=cookies,data=data,params=params,files=files,json=json)
        return rp.json()

if __name__ == '__main__':
    getdata = YamlTools.read_yaml_file("api_login.yaml")[0]
    print(Base_request.excute_api_request(request=getdata["request"],testcase=getdata["parametrize"][0]).text)



























# import requests
#
# from common.yaml_tools import YamlTools
# from conf.conf import API_URL
#
#
# class Base_requests:
#     sess = requests.session()
#
#     # 定义一个可以发送任意请求的方法
#     @classmethod
#     def send_request(cls,**kwargs):
#         rp = cls.sess.request(**kwargs)
#         return rp
#
#     @classmethod
#     #执行接口测试 :把yaml文件中的测试用例 和api 请求传入
#     def excute_api_request(cls,request,testcase):
#         # 获取请求方法
#         method = request["method"]
#         # 获取接口url方式
#         url =API_URL+ request["url"]
#         # 获取请求头信息
#         headers = request["headers"]
#         # 获取请求体信息 接口cookies
#         cookies = request["cookies"]
#         # 5.获取请求体信息 测试数据data
#         data  = testcase["data"]
#         # 获取请求体信息 测试数据json
#         json = testcase["json"]
#         # 获取请求体信息 测试数据files
#         files = testcase["files"]
#         # 获取请求体信息 测试数据params(get)
#         params = testcase["params"]
#
#         # 获取请求参数
#
#         rp = cls.send_request(method=method,url=url,headers=headers,cookies=cookies,data=data,params=params,files=files,json=json)
#         return rp.json()
#
# if __name__ == '__main__':
#     getdata = YamlTools.read_yaml_file("api_login.yaml")[0]
#     print(Base_requests.excute_api_request(request=getdata["request"], testcase=getdata["parametrize"][0]).text)
#
#
